home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 July: Mac OS SDK / Dev.CD Jul 00 SDK2.toast / Development Kits / Cross Platform / QuickTime 4.1.2 Windows SDK / CIncludes / QD3DLight.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-04-12  |  9.7 KB  |  362 lines  |  [TEXT/R*ch]

  1. /*
  2.      File:        QD3DLight.h
  3.  
  4.      Contains:    Generic light routines                                             
  5.  
  6.      Version:    Technology:    Quickdraw 3D 1.6
  7.                  Release:    QuickTime 4.1
  8.  
  9.      Copyright:    (c) 1995-1999 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. */
  17. #ifndef __QD3DLIGHT__
  18. #define __QD3DLIGHT__
  19.  
  20. #ifndef __QD3D__
  21.     #include <QD3D.h>
  22. #endif
  23.  
  24.  
  25.  
  26.  
  27. #if PRAGMA_ONCE
  28. #pragma once
  29. #endif
  30.  
  31. #ifdef __cplusplus
  32. extern "C" {
  33. #endif
  34.  
  35. #if PRAGMA_IMPORT
  36. #pragma import on
  37. #endif
  38.  
  39. #if PRAGMA_STRUCT_ALIGN
  40.     #pragma options align=power
  41. #elif PRAGMA_STRUCT_PACKPUSH
  42.     #pragma pack(push, 2)
  43. #elif PRAGMA_STRUCT_PACK
  44.     #pragma pack(2)
  45. #endif
  46.  
  47. #if PRAGMA_ENUM_ALWAYSINT
  48.     #pragma enumsalwaysint on
  49. #elif PRAGMA_ENUM_OPTIONS
  50.     #pragma option enum=int
  51. #elif PRAGMA_ENUM_PACK
  52.     #if __option(pack_enums)
  53.         #define PRAGMA_ENUM_PACK__QD3DLIGHT__
  54.     #endif
  55.     #pragma options(!pack_enums)
  56. #endif
  57.  
  58. /******************************************************************************
  59.  **                                                                             **
  60.  **                            Enum Definitions                                 **
  61.  **                                                                             **
  62.  *****************************************************************************/
  63.  
  64. enum TQ3AttenuationType {
  65.     kQ3AttenuationTypeNone        = 0,
  66.     kQ3AttenuationTypeInverseDistance = 1,
  67.     kQ3AttenuationTypeInverseDistanceSquared = 2
  68. };
  69. typedef enum TQ3AttenuationType TQ3AttenuationType;
  70.  
  71.  
  72.  
  73. enum TQ3FallOffType {
  74.     kQ3FallOffTypeNone            = 0,
  75.     kQ3FallOffTypeLinear        = 1,
  76.     kQ3FallOffTypeExponential    = 2,
  77.     kQ3FallOffTypeCosine        = 3
  78. };
  79. typedef enum TQ3FallOffType TQ3FallOffType;
  80.  
  81.  
  82. /******************************************************************************
  83.  **                                                                             **
  84.  **                            Data Structure Definitions                         **
  85.  **                                                                             **
  86.  *****************************************************************************/
  87.  
  88. struct TQ3LightData {
  89.     TQ3Boolean                         isOn;
  90.     float                             brightness;
  91.     TQ3ColorRGB                     color;
  92. };
  93. typedef struct TQ3LightData                TQ3LightData;
  94.  
  95. struct TQ3DirectionalLightData {
  96.     TQ3LightData                     lightData;
  97.     TQ3Boolean                         castsShadows;
  98.     TQ3Vector3D                     direction;
  99. };
  100. typedef struct TQ3DirectionalLightData    TQ3DirectionalLightData;
  101.  
  102. struct TQ3PointLightData {
  103.     TQ3LightData                     lightData;
  104.     TQ3Boolean                         castsShadows;
  105.     TQ3AttenuationType                 attenuation;
  106.     TQ3Point3D                         location;
  107. };
  108. typedef struct TQ3PointLightData        TQ3PointLightData;
  109.  
  110. struct TQ3SpotLightData {
  111.     TQ3LightData                     lightData;
  112.     TQ3Boolean                         castsShadows;
  113.     TQ3AttenuationType                 attenuation;
  114.     TQ3Point3D                         location;
  115.     TQ3Vector3D                     direction;
  116.     float                             hotAngle;
  117.     float                             outerAngle;
  118.     TQ3FallOffType                     fallOff;
  119. };
  120. typedef struct TQ3SpotLightData            TQ3SpotLightData;
  121. /******************************************************************************
  122.  **                                                                             **
  123.  **                    Light routines (apply to all TQ3LightObjects)             **
  124.  **                                                                             **
  125.  *****************************************************************************/
  126. EXTERN_API_C( TQ3ObjectType )
  127. Q3Light_GetType                    (TQ3LightObject         light);
  128.  
  129. EXTERN_API_C( TQ3Status )
  130. Q3Light_GetState                (TQ3LightObject         light,
  131.                                  TQ3Boolean *            isOn);
  132.  
  133. EXTERN_API_C( TQ3Status )
  134. Q3Light_GetBrightness            (TQ3LightObject         light,
  135.                                  float *                brightness);
  136.  
  137. EXTERN_API_C( TQ3Status )
  138. Q3Light_GetColor                (TQ3LightObject         light,
  139.                                  TQ3ColorRGB *            color);
  140.  
  141. EXTERN_API_C( TQ3Status )
  142. Q3Light_SetState                (TQ3LightObject         light,
  143.                                  TQ3Boolean             isOn);
  144.  
  145. EXTERN_API_C( TQ3Status )
  146. Q3Light_SetBrightness            (TQ3LightObject         light,
  147.                                  float                     brightness);
  148.  
  149. EXTERN_API_C( TQ3Status )
  150. Q3Light_SetColor                (TQ3LightObject         light,
  151.                                  const TQ3ColorRGB *    color);
  152.  
  153. EXTERN_API_C( TQ3Status )
  154. Q3Light_GetData                    (TQ3LightObject         light,
  155.                                  TQ3LightData *            lightData);
  156.  
  157. EXTERN_API_C( TQ3Status )
  158. Q3Light_SetData                    (TQ3LightObject         light,
  159.                                  const TQ3LightData *    lightData);
  160.  
  161.  
  162. /******************************************************************************
  163.  **                                                                             **
  164.  **                            Specific Light Routines                               **
  165.  **                                                                             **
  166.  *****************************************************************************/
  167. /******************************************************************************
  168.  **                                                                             **
  169.  **                            Ambient Light                                       **
  170.  **                                                                             **
  171.  *****************************************************************************/
  172. EXTERN_API_C( TQ3LightObject )
  173. Q3AmbientLight_New                (const TQ3LightData *    lightData);
  174.  
  175. EXTERN_API_C( TQ3Status )
  176. Q3AmbientLight_GetData            (TQ3LightObject         light,
  177.                                  TQ3LightData *            lightData);
  178.  
  179. EXTERN_API_C( TQ3Status )
  180. Q3AmbientLight_SetData            (TQ3LightObject         light,
  181.                                  const TQ3LightData *    lightData);
  182.  
  183.  
  184. /******************************************************************************
  185.  **                                                                             **
  186.  **                        Directional Light                                     **
  187.  **                                                                             **
  188.  *****************************************************************************/
  189. EXTERN_API_C( TQ3LightObject )
  190. Q3DirectionalLight_New            (const TQ3DirectionalLightData * directionalLightData);
  191.  
  192. EXTERN_API_C( TQ3Status )
  193. Q3DirectionalLight_GetCastShadowsState (TQ3LightObject     light,
  194.                                  TQ3Boolean *            castsShadows);
  195.  
  196. EXTERN_API_C( TQ3Status )
  197. Q3DirectionalLight_GetDirection    (TQ3LightObject         light,
  198.                                  TQ3Vector3D *            direction);
  199.  
  200. EXTERN_API_C( TQ3Status )
  201. Q3DirectionalLight_SetCastShadowsState (TQ3LightObject     light,
  202.                                  TQ3Boolean             castsShadows);
  203.  
  204. EXTERN_API_C( TQ3Status )
  205. Q3DirectionalLight_SetDirection    (TQ3LightObject         light,
  206.                                  const TQ3Vector3D *    direction);
  207.  
  208. EXTERN_API_C( TQ3Status )
  209. Q3DirectionalLight_GetData        (TQ3LightObject         light,
  210.                                  TQ3DirectionalLightData * directionalLightData);
  211.  
  212. EXTERN_API_C( TQ3Status )
  213. Q3DirectionalLight_SetData        (TQ3LightObject         light,
  214.                                  const TQ3DirectionalLightData * directionalLightData);
  215.  
  216.  
  217. /******************************************************************************
  218.  **                                                                             **
  219.  **                        Point Light                                              **
  220.  **                                                                             **
  221.  *****************************************************************************/
  222. EXTERN_API_C( TQ3LightObject )
  223. Q3PointLight_New                (const TQ3PointLightData * pointLightData);
  224.  
  225. EXTERN_API_C( TQ3Status )
  226. Q3PointLight_GetCastShadowsState (TQ3LightObject         light,
  227.                                  TQ3Boolean *            castsShadows);
  228.  
  229. EXTERN_API_C( TQ3Status )
  230. Q3PointLight_GetAttenuation        (TQ3LightObject         light,
  231.                                  TQ3AttenuationType *    attenuation);
  232.  
  233. EXTERN_API_C( TQ3Status )
  234. Q3PointLight_GetLocation        (TQ3LightObject         light,
  235.                                  TQ3Point3D *            location);
  236.  
  237. EXTERN_API_C( TQ3Status )
  238. Q3PointLight_GetData            (TQ3LightObject         light,
  239.                                  TQ3PointLightData *    pointLightData);
  240.  
  241. EXTERN_API_C( TQ3Status )
  242. Q3PointLight_SetCastShadowsState (TQ3LightObject         light,
  243.                                  TQ3Boolean             castsShadows);
  244.  
  245. EXTERN_API_C( TQ3Status )
  246. Q3PointLight_SetAttenuation        (TQ3LightObject         light,
  247.                                  TQ3AttenuationType     attenuation);
  248.  
  249. EXTERN_API_C( TQ3Status )
  250. Q3PointLight_SetLocation        (TQ3LightObject         light,
  251.                                  const TQ3Point3D *        location);
  252.  
  253. EXTERN_API_C( TQ3Status )
  254. Q3PointLight_SetData            (TQ3LightObject         light,
  255.                                  const TQ3PointLightData * pointLightData);
  256.  
  257.  
  258. /******************************************************************************
  259.  **                                                                             **
  260.  **                        Spot Light                                              **
  261.  **                                                                             **
  262.  *****************************************************************************/
  263. EXTERN_API_C( TQ3LightObject )
  264. Q3SpotLight_New                    (const TQ3SpotLightData * spotLightData);
  265.  
  266. EXTERN_API_C( TQ3Status )
  267. Q3SpotLight_GetCastShadowsState    (TQ3LightObject         light,
  268.                                  TQ3Boolean *            castsShadows);
  269.  
  270. EXTERN_API_C( TQ3Status )
  271. Q3SpotLight_GetAttenuation        (TQ3LightObject         light,
  272.                                  TQ3AttenuationType *    attenuation);
  273.  
  274. EXTERN_API_C( TQ3Status )
  275. Q3SpotLight_GetLocation            (TQ3LightObject         light,
  276.                                  TQ3Point3D *            location);
  277.  
  278. EXTERN_API_C( TQ3Status )
  279. Q3SpotLight_GetDirection        (TQ3LightObject         light,
  280.                                  TQ3Vector3D *            direction);
  281.  
  282. EXTERN_API_C( TQ3Status )
  283. Q3SpotLight_GetHotAngle            (TQ3LightObject         light,
  284.                                  float *                hotAngle);
  285.  
  286. EXTERN_API_C( TQ3Status )
  287. Q3SpotLight_GetOuterAngle        (TQ3LightObject         light,
  288.                                  float *                outerAngle);
  289.  
  290. EXTERN_API_C( TQ3Status )
  291. Q3SpotLight_GetFallOff            (TQ3LightObject         light,
  292.                                  TQ3FallOffType *        fallOff);
  293.  
  294. EXTERN_API_C( TQ3Status )
  295. Q3SpotLight_GetData                (TQ3LightObject         light,
  296.                                  TQ3SpotLightData *        spotLightData);
  297.  
  298. EXTERN_API_C( TQ3Status )
  299. Q3SpotLight_SetCastShadowsState    (TQ3LightObject         light,
  300.                                  TQ3Boolean             castsShadows);
  301.  
  302. EXTERN_API_C( TQ3Status )
  303. Q3SpotLight_SetAttenuation        (TQ3LightObject         light,
  304.                                  TQ3AttenuationType     attenuation);
  305.  
  306. EXTERN_API_C( TQ3Status )
  307. Q3SpotLight_SetLocation            (TQ3LightObject         light,
  308.                                  const TQ3Point3D *        location);
  309.  
  310. EXTERN_API_C( TQ3Status )
  311. Q3SpotLight_SetDirection        (TQ3LightObject         light,
  312.                                  const TQ3Vector3D *    direction);
  313.  
  314. EXTERN_API_C( TQ3Status )
  315. Q3SpotLight_SetHotAngle            (TQ3LightObject         light,
  316.                                  float                     hotAngle);
  317.  
  318. EXTERN_API_C( TQ3Status )
  319. Q3SpotLight_SetOuterAngle        (TQ3LightObject         light,
  320.                                  float                     outerAngle);
  321.  
  322. EXTERN_API_C( TQ3Status )
  323. Q3SpotLight_SetFallOff            (TQ3LightObject         light,
  324.                                  TQ3FallOffType         fallOff);
  325.  
  326. EXTERN_API_C( TQ3Status )
  327. Q3SpotLight_SetData                (TQ3LightObject         light,
  328.                                  const TQ3SpotLightData * spotLightData);
  329.  
  330.  
  331.  
  332.  
  333.  
  334. #if PRAGMA_ENUM_ALWAYSINT
  335.     #pragma enumsalwaysint reset
  336. #elif PRAGMA_ENUM_OPTIONS
  337.     #pragma option enum=reset
  338. #elif defined(PRAGMA_ENUM_PACK__QD3DLIGHT__)
  339.     #pragma options(pack_enums)
  340. #endif
  341.  
  342. #if PRAGMA_STRUCT_ALIGN
  343.     #pragma options align=reset
  344. #elif PRAGMA_STRUCT_PACKPUSH
  345.     #pragma pack(pop)
  346. #elif PRAGMA_STRUCT_PACK
  347.     #pragma pack()
  348. #endif
  349.  
  350. #ifdef PRAGMA_IMPORT_OFF
  351. #pragma import off
  352. #elif PRAGMA_IMPORT
  353. #pragma import reset
  354. #endif
  355.  
  356. #ifdef __cplusplus
  357. }
  358. #endif
  359.  
  360. #endif /* __QD3DLIGHT__ */
  361.  
  362.